Efficient Algebraic Operations on Programs
نویسنده
چکیده
A symbolic version of an operation on values is a corresponding operation on program texts. For example, symbolic composition of two programs p, q yields a program whose meaning is the (mathematical) composition of the meanings of p and q. Another example is symbolic specialization of a function to a known first argument value. This operation, given the first argument, transforms a two-input program into an equivalent one-input program. Computability of both of these symbolic operations has long been established in recursive function theory [12,16]; the latter is known as Kleene’s “s-m-n” theorem, also known as partial evaluation. In addition to computability we are concerned with efficient symbolic operations, in particular applications of the two just mentioned to compiling and compiler generation. Several examples of symbolic composition are given, culminating in nontrivial applications to compiler generation [14], [18]. Partial evaluation has recently become the subject of considerable interest [1]. Reasons include simplicity, efficiency and the surprising fact that self-application can be used in practice to generate compilers, and a compiler generator as well. This paper makes three contributions: First, it introduces a new notation to describe the types of symbolic operations, one that makes an explicit distinction between the types of program texts and the values they denote. This leads to natural definitions of what it means for an interpreter or compiler to be type correct—a tricky problem in a multilanguage context. Second, it uses the notation to give a clear overview of several earlier applications of symbolic computation. For example, it is seen that the new type notation can satisfactorily explain the types involved when generating a compiler by self-applying a partial evaluator. Finally, a number of problems for further research are stated along the way. The paper ends by suggesting Cartesian categorical combinators as a unifying framework in which to study symbolic operations.
منابع مشابه
An Algebraic Interface for GETA Search Engine
GETA is a library that implements high performance method for associative computation to be used as a basis of various document processing including searching or clustering. We proposed an algebraic view for the GETA engine with concrete implementation of an interface which connects the high level view with the underlying efficient library. Users can write highly abstract programs in a calculat...
متن کاملAdding alternative access paths to abstract data types
We present in this paper a proposal for developing efficient programs in the abstract data type (ADT) programming framework, keeping the modular structure of programs and without violating the information hiding principle. The proposal focuses in the concept of "shortcut" as an efficient way of accessing to data, alternative to the access by means of the primitive operations of the ADT. We deve...
متن کاملGenerating Efficient Programs for Two-Level Memories from Tensor-products
This paper presents a framework for synthesizing eecient out-of-core programs for block recursive algorithms such as the fast Fourier transform (FFT) and Batcher's bitonic sort. The block recursive algorithms considered in this paper are described using tensor (Kronecker) product and other matrix operations. The algebraic properties of the matrix representation are used to derive eecient out-of...
متن کاملA Framework for Generating Distributed-Memory Parallel Programs for Block Recursive Algorithms
and implement high-performance algorithms to compute the discrete Fourier transform (DFT) [17, 24] and matrix multiplication [14, 15] on shared-memory vector multiprocessors. The significance of the tensor product lies in its ability to model both the computational structures occurring in block-recursive algorithms and the underlying hardware structures, such as the interconnection networks [19...
متن کاملCalculating Functional Programs
Functional programs are merely equations; they may be manipulated by straightforward equational reasoning. In particular, one can use this style of reasoning to calculate programs, in the same way that one calculates numeric values in arithmetic. Many useful theorems for such reasoning derive from an algebraic view of programs, built around datatypes and their operations. Traditional algebraic ...
متن کاملEfficient Computation of Algebraic Immunity for Algebraic and Fast Algebraic Attacks
In this paper we propose several efficient algorithms for assessing the resistance of Boolean functions against algebraic and fast algebraic attacks when implemented in LFSR-based stream ciphers. An algorithm is described which permits to compute the algebraic immunity d of a Boolean function with n variables in O(D) operations, for D ≈ ` n d ́ , rather than in O(D) operations necessary in all p...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1991